Many modern database application programs include a query engine with a formatting tool. A user can use the query engine to build queries to retrieve data from the database, and use the formatting tool to display the data in a report in various formats. The queries and formatting information can be saved in the database application program. To reproduce the report, a conventional database application program reruns the query to retrieve data, reformats the retrieved data, and redisplays the result. The query can be complex and the data in the database may have been changed (e.g., a new record can be inserted into the database).